home *** CD-ROM | disk | FTP | other *** search
- /* @(#)minimal.c, Dirk Haun, Juni 1995
- *
- * Dieser Quelltext zeigt einen minimalen xFSL-Aufruf. Wie man sehen kann,
- * genügt es, die xFSL_PAR- und PFONTINFO-Struktur mit Nullen zu füllen,
- * die Größen der beiden Strukturen (und evtl. noch die Fontfarbe)
- * einzutragen.
- *
- * Ein Fontselektor-Aufruf in dieser Form ist i.A. nicht sehr sinnvoll, da
- * man ja meist nur bestimmte Fonts zur Auswahl stellen will. Dieser Quell-
- * text ist auch nur zur Demonstration und als Einladung zum Herumspielen
- * mit den vielen Parametern gedacht.
- *
- * Insbesondere soll aber gezeigt werden, daß ein xFSL-Aufruf gar nicht so
- * kompliziert ist, wie es die vielen Parameter vermuten lassen. Was man
- * nicht benötigt (oder versteht), kann man einfach weglassen bzw. auf Null
- * setzen.
- *
- */
-
- #include <stdio.h>
- #include <aes.h>
- #include <vdi.h>
- #include <string.h>
- #include <stdlib.h>
- #include <xfsl.h>
-
- extern int get_cookie(long cookie,long *value);
-
- static void xfsl_error(int err)
- {
- char alert[256], z[8];
-
- strcpy(alert,"[3][Fontselektor meldet:|");
- switch(err)
- {
- case xFS_ERROR: strcat(alert,"Nicht genug Speicher");
- break;
- case xFS_ACTIVE: strcat(alert,"Mehrfachaufruf nicht möglich");
- break;
- case xFS_NO_FONTSIZE: strcat(alert,"Fontgröße konnte nicht|identifiziert werden");
- break;
- case xFS_NO_FONTS: strcat(alert,"Anzahl Fonts muß|größer Null sein");
- break;
- case xFS_NO_WINDOW: strcat(alert,"Konnte kein Fenster öffnen");
- break;
- case xFS_NO_HANDLE: strcat(alert,"Kein Handle mehr frei");
- break;
- case xFS_RES_ERROR: strcat(alert,"Auflösung zu klein|(mind. 640x400)");
- break;
- case xFS_LOADERROR: strcat(alert,"Fehler beim Nachladen|des Overlays");
- break;
- case xFS_PARERROR: strcat(alert,"Fehlerhafte Parameter!|Aufruf nach Revision 3?");
- break;
- default: itoa(err,z,10);
- strcat(alert,"Fehler ");
- strcat(alert,z);
- }
- strcat(alert,"! ][ Abbruch ]");
- form_alert(1,alert);
- }
-
- int main(void)
- {
- int xhandle, xret;
- xFSL *xfsl; /* Zeiger auf xFSL-Struktur */
- xFSL_PAR xpar; /* Parameter-Struktur */
- PFONTINFO pfont; /* Fontinfo-Struktur */
- char msg[256];
-
- if(appl_init()>=0)
- {
- if(get_cookie('xFSL',(long*)&xfsl))
- {
-
- memset(&xpar,0,sizeof(xFSL_PAR)); /* Strukturen "ausnullen" */
- memset(&pfont,0,sizeof(PFONTINFO));
-
- xpar.font=&pfont; /* Zeiger auf PFONTINFO eintragen */
- xpar.par_size=(int)sizeof(xFSL_PAR); /* Größen eintragen (wichtig!) */
- xpar.pfi_size=(int)sizeof(PFONTINFO);
- xpar.font->fontcol=BLACK; /* Fontfarbe schwarz */
-
- xhandle=xfsl->xfsl_init(0,&xpar); /* Init-Aufruf */
- if(xhandle>=0)
- {
- do
- {
- xret=xfsl->xfsl_event(xhandle,0L); /* Event-Aufruf */
- if(xret<0) break; /* Fehler aufgetreten */
- }
- while(xret!=xFS_STOP && xret!=xFS_OK);
- xfsl->xfsl_exit(xhandle); /* Exit-Aufruf (nicht vergessen) */
- if(xret<0) xfsl_error(xret);
- else
- {
- if(xret==xFS_STOP) form_alert(1,"[1][\'Abbruch\' ausgewählt.][ OK ]");
- else if(xret==xFS_OK)
- {
- sprintf(msg,"[1][Ausgewählt wurde Font %d|in der Größe %d pt.][ OK ]",
- xpar.font->fontid,xpar.font->fontsize.size);
- form_alert(1,msg);
- }
- }
- }
- else xfsl_error(xhandle);
-
- }
- else form_alert(1,"[2][Cookie \'xFSL\' nicht|gefunden!][ Abbruch ]");
- appl_exit();
- }
- return(0);
- }
-